package com.trinity.payment;

import java.util.ArrayList;
import java.util.List;

/**
 * 定义一个状态接口，声明所有状态需要实现的方法：
 */
public interface PaymentState {

    /**
     * 添加选购项
     *
     * @param context
     * @param option
     */
    void addFeeOption(FeeManager context, FeeOption option);
}


/**
 * 草稿状态
 */
class DraftState implements PaymentState {

    @Override
    public void addFeeOption(FeeManager context, FeeOption option) {
        System.out.println("目前是草稿状态,可以添加选购项！");
        List<FeeOption> options = context.getFeeItem().getOptions();
        if (options == null) {
            options = new ArrayList<>();
        }
        options.add(option);
        context.getFeeItem().setOptions(options);
    }


}

/**
 * 未开始
 */
class NotStartedState implements PaymentState {

    @Override
    public void addFeeOption(FeeManager context, FeeOption option) {
        System.out.println("目前是未开始状态,不可能添加修改项目");
    }


}

/**
 * 进行中
 */
class InProgressState implements PaymentState {


    @Override
    public void addFeeOption(FeeManager context, FeeOption option) {
        System.out.println("目前是进行中状态,不可能添加修改项目");
    }


}

/**
 * 已关闭
 */
class FailedState implements PaymentState {


    @Override
    public void addFeeOption(FeeManager context, FeeOption option) {
        System.out.println("目前是已关闭状态,不可能添加修改项目");
    }


}
